;--------------------------------------------------------------------------------------------
             ; boot-loader和kernel的配置信息
; -------------------------------------------------------------------------------------------

; ---------- boot-loader的内存、磁盘地址 ----------
LOADER_BASE_ADDR equ 0x900                            ; 将boot-loader加载至内存地址0x900处
LOADER_START_SECTOR equ 0x2                           ; boot-loader在硬盘上的LBA地址，0柱面0扇面2扇区（第3个扇区）


; ---------- GDT描述符属性 ----------
DESC_G_4K         equ 1_00000000000000000000000b      ; G位（第23位）置1，表示段界限单位为4KB
DESC_D_32         equ  1_0000000000000000000000b      ; D/B位（第22位）置1，设置代码段/数据段的有效地址与操作数为32位，而非16位
DESC_L            equ   0_000000000000000000000b      ; L位（第21位）置0，表示32位代码段
DESC_AVL          equ    0_00000000000000000000b      ; AVL位（第21位）置0，无意义，CPU不使用该位
DESC_LIMIT_CODE2  equ     1111_0000000000000000b      ; 代码段的段界限的第2部分（高32位的16-19位）全为1
DESC_LIMIT_DATA2  equ           DESC_LIMIT_CODE2      ; 同上，只是当前段为数据段
DESC_LIMIT_VIDEO2 equ      0000_000000000000000b      ; 操作显存时的段界限第2部分（高32位中16~19）全为0
DESC_P            equ         1_000000000000000b      ; P位（第215位）置1，表示段在内存中
DESC_DPL_0        equ          00_0000000000000b      ; 特权级为0
DESC_DPL_1        equ          01_0000000000000b      ; 特权级为1
DESC_DPL_2        equ          10_0000000000000b      ; 特权级为2
DESC_DPL_3        equ          11_0000000000000b      ; 特权级为3
DESC_S_sys        equ            0_000000000000b      ; S位（第12位）置0，为系统段
DESC_S_CODE       equ            1_000000000000b      ; S位（第12位）置1，非系统段，此处为代码段
DESC_S_DATA       equ                DESC_S_CODE      ; 同上，此处为数据段
DESC_TYPE_CODE    equ             1000_00000000b      ; 代码段TYPE位为x=1,c=0,r=0,a=0，可执行、非一致性、不可读、已访问位a清0
DESC_TYPE_DATA    equ             0010_00000000b      ; 数据段TYPE位为x=0,e=0,w=1,a=0，只读、向下扩展（栈段）、已访问位A清0

                                                      ; 定义代码段、数据段、显存段的高32位
DESC_CODE_HIGH4   equ (0x00 << 24) + DESC_G_4K + \
                 DESC_D_32 + DESC_L + DESC_AVL + \
        DESC_LIMIT_CODE2 + DESC_P + DESC_DPL_0 + \
             DESC_S_CODE + DESC_TYPE_CODE + 0x00      

DESC_DATA_HIGH4   equ (0x00 << 24) + DESC_G_4K + \
                 DESC_D_32 + DESC_L + DESC_AVL + \
        DESC_LIMIT_DATA2 + DESC_P + DESC_DPL_0 + \
             DESC_S_DATA + DESC_TYPE_DATA + 0x00

DESC_VIDEO_HIGH4  equ (0x00 << 24) + DESC_G_4K + \
                 DESC_D_32 + DESC_L + DESC_AVL + \
       DESC_LIMIT_VIDEO2 + DESC_P + DESC_DPL_0 + \
            DESC_S_DATA + DESC_TYPE_DATA + 0x0b


; ---------- 选择子属性 ----------
RPL0   equ  00b                                       ; 请求者特权级为0
RPL1   equ  01b                                       ; 请求者特权级为1
RPL2   equ  10b                                       ; 请求者特权级为2
RPL3   equ  11b                                       ; 请求者特权级为3
TI_GDT equ 000b                                       ; 段描述符在GDT中
TI_LDT equ 100b                                       ; 段描述符在LDT中
